/* Spiel 'Heisser Draht' */

int taster = 11; // Pin fuer Taster 
int tasterval = LOW; // Wert des Tasters
int tasterstatus = LOW;
int pins[] = {2,3,4,5,6,}; // Die Pins fuer die LEDs
int num_pins = 5; // Anzahl der LEDs
int pinzaehler = 0; // Zaehler wieviele LEDs an sind

void setup ()
{
  int i;
  pinMode(taster,INPUT); // Taster auf input
  tasterstatus = LOW; // Ausgangszustand
  
  /* LEDs auf output setzen
     Ergänzt: LED auch gleich auf 'LOW' setzen.
  */
  for (i=0;i<num_pins;++i) {
    pinMode(pins[i],OUTPUT);
    digitalWrite(pins[i], LOW);
  }
}
void loop ()
{
  int i;
  tasterval=digitalRead(taster); // Taster auslesen
 
  if (tasterval == HIGH) {
    /* Tastendruck entdeckt */
    if (tasterstatus == LOW) {
      /* Vorheriger Zustand war LOW -> Zustandsänderung! */
      tasterstatus = HIGH;
      // Zähler inkrementieren
      pinzaehler++;
      /* Modulo-Teilung; setzt Zähler beim Überschreiten von num_pins
      auf 0 zurück */
      pinzaehler %= (num_pins + 1);
      // LED-Ausgänge setzen
      for (i = 0; i < num_pins; i++) {
        if (i < pinzaehler) { digitalWrite(pins[i], HIGH); }
        else { digitalWrite(pins[i], LOW); }
      }
      /* Soundausgabe in Funktion ausgelagert; kann dort angepasst werden */
      soundAusgabe();
      /* Verzögerung, um 'prellen' abzufangen */
      delay(200); // 1/5 sec.
    }
  }
  else {
    /* Taste losgelassent */
    tasterstatus = LOW;
  }
  /* Wiedereintritt in den Main-Loop;
     erst ab hier wird auf weitere Tastendrücke reagiert! */
}

void soundAusgabe() {
  /* hier folgt code zum Ausgeben von Signaltönen */
  
  /* Beispielcode (nicht getestet):
      siehe Funktion 'tone()' http://arduino.cc/en/Reference/Tone
      bzw.           'noTone()'  http://arduino.cc/en/Reference/NoTone
  
  
  int frequenz = 100 // 100 Hz - tiefster Ton
  if (pinzaehler == 0) {
    // Sound aus
    noTone(soundpin);
  }
  else {
    // Sound an; Frequenz entsprechend pinzaehler (Obertonreihe)
    tone(soundpin, frequenz * pinzaehler);
  }
  */
}

